package tbs.framework.exceptions;

/**
 * 错误处理接口，定义了处理错误和获取错误处理结果的方法
 * @author abstergo
 */
public interface IErrorConsumer {

    /**
     * 判断是否支持给定的错误
     *
     * @param e 要处理的错误
     * @return 如果支持该错误，返回true；否则返回false
     */
    default boolean errorSupported(Throwable e) {
        return true;
    }

    /**
     * 处理错误
     *
     * @param e 要处理的错误
     */
    void onError(Throwable e);

    /**
     * 处理错误并根据返回类型返回相应类型的结果
     *
     * 此方法首先处理错误，然后根据指定的返回类型返回一个默认值
     *
     * @param e 错误对象
     * @return 根据返回类型决定的具体返回值，由于是默认实现，总是返回null
     */
    default Object onErrorReturn(Throwable e) {
        onError(e);
        return null;
    }
}
